	.text
	.global test01
test01:
	push %rbp
	mov %rsp, %rbp
	sub $32, %rsp
	lea -8(%rbp), %rax
	push %rax
	lea -20(%rbp), %rax
	pop %rdi
	mov %rax, (%rdi)
	lea -8(%rbp), %rax
	mov (%rax), %rax
	push %rax
	mov $1, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $1, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $2, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $3, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $1, %rax
	push %rax
	lea -20(%rbp), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	movsl (%rax), %rax
	jmp .L.return_test01
.L.return_test01:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global test02
test02:
	push %rbp
	mov %rsp, %rbp
	sub $16, %rsp
	lea -12(%rbp), %rax
	push %rax
	mov $1, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $1, %rax
	push %rax
	lea -12(%rbp), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $2, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	lea -12(%rbp), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $3, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	lea -12(%rbp), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	movsl (%rax), %rax
	jmp .L.return_test02
.L.return_test02:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global test03
test03:
	push %rbp
	mov %rsp, %rbp
	sub $64, %rsp
	lea -8(%rbp), %rax
	push %rax
	lea -56(%rbp), %rax
	pop %rdi
	mov %rax, (%rdi)
	lea -8(%rbp), %rax
	mov (%rax), %rax
	push %rax
	mov $0, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $1, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $1, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $2, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $3, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $3, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $4, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $4, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $5, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $5, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $6, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $6, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $7, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $7, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $8, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $8, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $9, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $9, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $10, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $10, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $11, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $11, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $11, %rax
	push %rax
	lea -56(%rbp), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	movsl (%rax), %rax
	jmp .L.return_test03
.L.return_test03:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global test04
test04:
	push %rbp
	mov %rsp, %rbp
	sub $32, %rsp
	lea -8(%rbp), %rax
	push %rax
	lea -20(%rbp), %rax
	pop %rdi
	mov %rax, (%rdi)
	lea -8(%rbp), %rax
	mov (%rax), %rax
	push %rax
	mov $0, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $1, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $1, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $2, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	movsl (%rax), %rax
	jmp .L.return_test04
.L.return_test04:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global test05
test05:
	push %rbp
	mov %rsp, %rbp
	sub $32, %rsp
	lea -8(%rbp), %rax
	push %rax
	lea -32(%rbp), %rax
	pop %rdi
	mov %rax, (%rdi)
	lea -8(%rbp), %rax
	mov (%rax), %rax
	push %rax
	mov $0, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $1, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $1, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $2, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $3, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $3, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $4, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $4, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $5, %rax
	push %rax
	lea -8(%rbp), %rax
	mov (%rax), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $5, %rax
	pop %rdi
	mov %eax, (%rdi)
	mov $2, %rax
	push %rax
	mov $1, %rax
	push %rax
	lea -32(%rbp), %rax
	pop %rdi
	imul $12, %rdi
	add %rdi, %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	movsl (%rax), %rax
	jmp .L.return_test05
.L.return_test05:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global test06
test06:
	push %rbp
	mov %rsp, %rbp
	sub $16, %rsp
	mov $0, %rax
	push %rax
	lea -16(%rbp), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	push %rax
	mov $200, %rax
	pop %rdi
	mov %eax, (%rdi)
	lea -8(%rbp), %rax
	push %rax
	mov $0, %rax
	push %rax
	lea -16(%rbp), %rax
	pop %rdi
	imul $4, %rdi
	add %rdi, %rax
	pop %rdi
	mov %rax, (%rdi)
	lea -8(%rbp), %rax
	mov (%rax), %rax
	movsl (%rax), %rax
	jmp .L.return_test06
.L.return_test06:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global testArraySize1d
testArraySize1d:
	push %rbp
	mov %rsp, %rbp
	sub $16, %rsp
	mov $8, %rax
	jmp .L.return_testArraySize1d
.L.return_testArraySize1d:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global testArraySize2d
testArraySize2d:
	push %rbp
	mov %rsp, %rbp
	sub $32, %rsp
	mov $24, %rax
	jmp .L.return_testArraySize2d
.L.return_testArraySize2d:
	mov %rbp, %rsp
	pop %rbp
	ret
	.text
	.global main
main:
	push %rbp
	mov %rsp, %rbp
	sub $0, %rsp
	mov $2, %rax
	push %rax
	call test01
	push %rax
	pop %rsi
	pop %rdi
	call assert
	mov $3, %rax
	push %rax
	call test02
	push %rax
	pop %rsi
	pop %rdi
	call assert
	mov $11, %rax
	push %rax
	call test03
	push %rax
	pop %rsi
	pop %rdi
	call assert
	mov $2, %rax
	push %rax
	call test04
	push %rax
	pop %rsi
	pop %rdi
	call assert
	mov $5, %rax
	push %rax
	call test05
	push %rax
	pop %rsi
	pop %rdi
	call assert
	mov $200, %rax
	push %rax
	call test06
	push %rax
	pop %rsi
	pop %rdi
	call assert
	mov $8, %rax
	push %rax
	call testArraySize1d
	push %rax
	pop %rsi
	pop %rdi
	call assert
	mov $4, %rax
	push %rax
	mov $3, %rax
	push %rax
	mov $2, %rax
	pop %rdi
	imul %rdi, %rax
	pop %rdi
	imul %rdi, %rax
	push %rax
	call testArraySize2d
	push %rax
	pop %rsi
	pop %rdi
	call assert
.L.return_main:
	mov %rbp, %rsp
	pop %rbp
	ret
